package com.java.socket.datagram;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 服务器端，实现UDP的数据传输
 * 步骤：
 * 1.创建DatagramSocket，指定端口号；
 * 2.创建DatagramPacket；
 * 3.接收客户端发送的数据信息；
 * 4.读取数据；
 * 
 * @author jinmingwu
 *
 */
public class UDPServer {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		/**
		 * 接收客户端发送的数据
		 */
		//1.创建服务器端DatagramSocket，并指定端口号
		DatagramSocket socket = new DatagramSocket(8800);
		
		//2.创建数据报，用于接收客户端发送的数据
		byte[] data = new byte[1024];
		DatagramPacket packet = new DatagramPacket(data, data.length);
		
		//3.接收客户端发送的数据
		System.out.println("===服务器端已经启动，等待客户端发送数据！===");
		socket.receive(packet);	//处于阻塞状态，指导接收到数据报为止
		
		//4.读取数据
		String info = new String(data, 0, packet.getLength());
		System.out.println("服务器接收到的信息是：" + info);
		
		/**
		 * 向客户端发送响应
		 */
		
		//1.定义客户端的地址、端口号、数据
		InetAddress address = packet.getAddress();
		int port = packet.getPort();
		byte[] data2 = "我是服务器，我已经接收到你的信息了！".getBytes();
		
		//2.创建数据报，包含响应的数据信息
		DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
		
		//3.响应客户端
		socket.send(packet2);
		
		//4.关闭资源
		socket.close();
		
		
	}

}
